using System;
using System.Collections.Generic;
using MSOutlook = Microsoft.Office.Interop.Outlook;

namespace Microsoft.Sample.Outlook.Utility
{
	public interface IOutlookSyncItem
	{
		string EntryID { get; set;}
	}

	[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    public sealed class OutlookCustomSyncInfoAttribute : Attribute
	{
		private string _methodName;
		public string MethodName
		{
			get { return _methodName; }
		}
		public OutlookCustomSyncInfoAttribute(string methodName)
		{
			_methodName = methodName;
		}
	
	}


	[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    public sealed class OutlookItemSyncAttribute : Attribute
	{
		private MSOutlook.OlItemType _itemType;
		public MSOutlook.OlItemType ItemType
		{
			get { return _itemType; }
		}

		public OutlookItemSyncAttribute(MSOutlook.OlItemType itemType)
		{
			_itemType = itemType;
		}
	}

	[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class OutlookFieldSyncAttribute : Attribute
	{
		private string _fieldName;
		private bool _isUserProp = false;

		public string FieldName
		{
			get { return _fieldName; }
		}

		public bool IsUserProp
		{
			get { return _isUserProp; }
		}
	
		public OutlookFieldSyncAttribute(string fieldName)
		{
			_fieldName = fieldName;
		}

		public OutlookFieldSyncAttribute(string fieldName, bool isUserProp)
		{
			_fieldName = fieldName;
			_isUserProp = isUserProp;
		}
	}

	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
    public sealed class OutlookFolderSyncAttribute : Attribute
	{
        private MSOutlook.OlDefaultFolders _folderType;
		private string _folderNameProperty;

        public MSOutlook.OlDefaultFolders FolderType
		{
			get { return _folderType; }
		}

		public string FolderNameProperty
		{
			get { return _folderNameProperty; }
		}

        public OutlookFolderSyncAttribute(MSOutlook.OlDefaultFolders folderType, string folderNameProperty)
		{
			_folderType = folderType;
			_folderNameProperty = folderNameProperty;
		}

		public OutlookFolderSyncAttribute(string folderNameProperty)
		{
            _folderType = MSOutlook.OlDefaultFolders.olFolderInbox;
			_folderNameProperty = folderNameProperty;
		}

	}
}
